//package work.rightAnswer;
//
//import java.util.ArrayList;
//import java.util.List;
////三种情况：
////1.最后一行，每个单词之间只隔一个' '
////2.非最后一行，只有一个单词，后面添空格
////3.非最后一行，多个单词，得出单词数量wordNum，减得空格数量spaceNum，
//// 除得anySpace = spaceNum/(wordNum-1),一般还会有余数，extraSpace = spaceNum%wordNum
//// 在前extraSpace个单词后额外添一个空格
//
////注：在一个多循环框架中，可用while（true）模板，外加left,right表示单次循环范围
//class Solution_68 {
//    public List<String> fullJustify(String[] words, int maxWidth) {
//        int len = words.length;
//        int left = 0;
//        List<String> list = new ArrayList<>();
//        while (true){
//            int right = left;
//            int sumLen = 0;
//            while (right<len&&right-left+sumLen+words[right].length()<=maxWidth){
//                sumLen+=words[right].length();
//                right++;
//            }
//
//            if(right==len){
//                StringBuilder stringBuilder = join(words, left, right - 1, " ");
//                stringBuilder.append(blank(maxWidth-stringBuilder.length()));
//                list.add(new String(stringBuilder));
//                break;
//            }
//
//
//            int wordNum = right-left;
//            if(wordNum==1){
//                StringBuilder stringBuilder = join(words, left, right - 1, " ");
//                stringBuilder.append(blank(maxWidth-stringBuilder.length()));
//                list.add(new String(stringBuilder));
//            }
//
//
//            if(wordNum>1){
//                int spaceNum = maxWidth-sumLen;
//                int anySpace = spaceNum/(wordNum-1);
//                int extraSpace = spaceNum%(wordNum-1);
//                StringBuilder stringBuilder = join(words, left, left + extraSpace, blank(anySpace + 1));
//                stringBuilder.append(blank(anySpace));
//                stringBuilder = stringBuilder.append(join(words,left+extraSpace+1,right-1,blank(anySpace)));
//                list.add(new String(stringBuilder));
//            }
//
//            left = right;
//        }
//
//        return list;
//    }
//
//
//    public String blank(int num){
//        StringBuilder stringBuilder = new StringBuilder();
//        for (int i = 0; i < num; i++) {
//            stringBuilder.append(" ");
//        }
//        return new String(stringBuilder);
//    }
//    public StringBuilder join(String[] words,int left,int right,String sep){
//        if(left>right){
//            return new StringBuilder();
//        }
//        StringBuilder stringBuilder = new StringBuilder(words[left]);
//        for (int i = left+1; i <= right; i++) {
//            stringBuilder.append(sep);
//            stringBuilder.append(words[i]);
//        }
//        return stringBuilder;
//    }
//}